]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screencastService: Add dmabuf/GL pipeline
authorrobert.mader@collabora.com <robert.mader@collabora.com>
Sat, 11 Feb 2023 06:06:14 +0000 (07:06 +0100)
committerMarge Bot <marge-bot@gnome.org>
Wed, 26 Apr 2023 12:19:42 +0000 (12:19 +0000)
This pipeline imports dmabufs and does format conversion using GL.
The `video/x-raw(memory:DMABuf)` filter ensures format negotiation
between `pipewiresrc` and Mutter will only succeed if Mutter advertises
dmabuf support as well, falling back to the next pipeline otherwise.

Using this pipeline frees Mutter from downloading buffer content on the
main thread which can have a big impact on compositor performance.
Doing format conversion on the GPU should further improve the overall
performance on most hardware.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2597>

js/dbusServices/screencast/screencastService.js

index 37327e24c6668468898ca57d6cb18786d09945c0..d63dd8087641515c41bbfa6891e670ba4e9559ea 100644 (file)
@@ -29,6 +29,15 @@ const DEFAULT_FRAMERATE = 30;
 const DEFAULT_DRAW_CURSOR = true;
 
 const PIPELINES = [
+    {
+        pipelineString:
+            'capsfilter caps=video/x-raw(memory:DMABuf),max-framerate=%F/1 ! \
+             glupload ! glcolorconvert ! gldownload ! \
+             queue ! \
+             vp8enc cpu-used=16 max-quantizer=17 deadline=1 keyframe-mode=disabled threads=%T static-threshold=1000 buffer-size=20000 ! \
+             queue ! \
+             webmmux',
+    },
     {
         pipelineString:
             'capsfilter caps=video/x-raw,max-framerate=%F/1 ! \